/*
 * DatoIndice.h
 *
 *  Created on: 14/10/2009
 *      Author: andres
 */

#ifndef DATOINDICE_H_
#define DATOINDICE_H_

#include "../../classes/PrimaryKey.h"
#include "../../classes/SecondaryKey.h"
#include <stdlib.h>
#include <string.h>

class DatoIndice
{
public:
	DatoIndice(SecondaryKey *secondaryKey, PrimaryKey *PrimaryKey);
	/*
	 * Devuelve un dato para poner en el indice
	 * a partir de el dato dado
	 * el tamanio es el estandar del indice
	 */
	char* GetDato(char* dato,unsigned  int id);

	/*
	 * compara la clavebuscada con la de la informacion
	 */
	int CompararClave(const char* clave,int tamanio, char* InformacionIndexada);

	/*
	 * compara las claves de las dos informaciones del indice
	 */
	int CompararClave(char* InformacionBuscada, char* InformacionIndexada);

	/*
	 * compara las claves primarias
	 */
	int CompararID(char* InformacionBuscada, char* InformacionIndexada);

	/*
	 * compara las ID
	 */
	//int CompararID(unsigned int IdBuscado,unsigned int IdIndexado);

	unsigned int GetID(char* informacion);

	char* GetClavePrimaria(char* informacion);

	virtual ~DatoIndice();

private:

	bool EsPrimario();
	int GetTamanioClave();
	int GetTamanioID();
	Key* GetKey();
	void CargaClave(char* destino, char* informacion);
	void CargarID(char* destino, char* informacion, unsigned int id);


	SecondaryKey *secondaryKey;
	PrimaryKey *primaryKey;
};

#endif /* DATOINDICE_H_ */
